package com.itdachang.design.creatation.builder;

/**
 * 抽象建造者
 *
 * @author gcq
 * @Create 2022-02-08
 */
public abstract class AbstractBuilder {
    Phone phone;

    /**
     * 链式调用
     * 返回的类型就是当前抽象建造者
     */

    /**
     * 自定义Cpu
     * @param cpu
     */
    abstract AbstractBuilder customCpu(String cpu);

    /**
     * 自定义内存
     * @param mem
     */
    abstract AbstractBuilder customMem(String mem);

    /**
     * 自定义磁盘
     * @param disk
     */
    abstract AbstractBuilder customDisk(String disk);

    /**
     * 自定义相机
     * @param cam
     */
    abstract AbstractBuilder customCam(String cam);

    /**
     * 返回当前创建好的商品
     * @return
     */
    Phone getProduct() {
        return phone;
    }
}